Currently one aims to produce EEPROM memories having ever higher densities, that is to say ever more sizable memory capacities, for example several megabits.
But this leads to an increase in the data transfer time. When reading, the data transfer time is determined by the transfer of the data read over the bus. When writing, the data transfer time is determined by the transfer over the bus of the data to be written as well as by the duration of the write operation. Consequently, a need exists to reduce this data transfer time.
A solution consists in increasing the frequency of the bus. However, when using a bus of the I2C, type, that is to say with an open drain, the maximum frequency is limited by the speed/consumption compromise. In practice, a value of 1 MHz is currently a maximum value for this type of bus.
For a bus of the SPI type, there is not really any limit for the maximum value of the frequency, but currently a frequency of 20 MHz is the maximum frequency used in applications requiring integrated circuits powered by a 5 V supply.
Generally, an EEPROM memory write operation or cycle requires two steps, namely an erasure step followed by a programming step. In the erasure step, an erasure pulse globally erases (sets to zero) all the memory cells of the bytes to be written. In the programming step, a programming pulse selectively programs (sets to 1) the memory cells which have to store a logical 1.
Each of these pulses is of the order of a millisecond and this duration results from a compromise between the constraints of a method of fabrication capable of providing high voltage (for example 15 or 16 V), the endurance of the memory (for example 4 million cycles) and the breakdown rate of the gate oxide.
Increasing the programming voltage from 16 V to 17 V could make it possible to gain a ratio of typically 10 in the duration of the write operation but at the price of technological constraints and of an endurance reduced by possibly a decade and a rate of breakdown of gate oxides increased by several decades.
Furthermore, such a mode of fast writing has to be activated by a dedicated command (“opcode”) and for a limited number of times (in the factory for example).
When a sizable quantity of data has to be written over N pages, a solution can consist in simultaneously erasing these N pages in a single cycle and then sequentially programming all the N pages one by one. However, here again such a mode of programming requires a dedicated command and the user must ensure that the pages concerned are in an “erased” status before receiving such a command since otherwise the new data will be combined with the old data through a logical OR function.